]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
workspace: Remove Long-press later with the actor
authorMarco Trevisan (Treviño) <mail@3v1n0.net>
Fri, 12 Jul 2019 11:53:33 +0000 (13:53 +0200)
committerFlorian Müllner <florian.muellner@gmail.com>
Mon, 9 Sep 2019 19:28:18 +0000 (19:28 +0000)
Ensure that the long-press later is removed with the actor, otherwise
it will try to use invalidated data.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700

js/ui/workspace.js

index 95369997a0154fd6beb772ba0310af07eb9938e9..f0951a63df6954da366091a2168e42bfd4bd110d 100644 (file)
@@ -354,6 +354,11 @@ var WindowClone = GObject.registerClass({
         this.metaWindow._delegate = null;
         this._delegate = null;
 
+        if (this._longPressLater) {
+            Meta.later_remove(this._longPressLater);
+            delete this._longPressLater;
+        }
+
         if (this.inDrag) {
             this.emit('drag-end');
             this.inDrag = false;
@@ -388,9 +393,13 @@ var WindowClone = GObject.registerClass({
             let event = Clutter.get_current_event();
             this._dragTouchSequence = event.get_event_sequence();
 
+            if (this._longPressLater)
+                return true;
+
             // A click cancels a long-press before any click handler is
             // run - make sure to not start a drag in that case
-            Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
+            this._longPressLater = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
+                delete this._longPressLater;
                 if (this._selected)
                     return;
                 let [x, y] = action.get_coords();